#ifndef CUFFTDX_FFT_20_FP64_FWD_PTX_HPP
#define CUFFTDX_FFT_20_FP64_FWD_PTX_HPP



template<> __forceinline__ __device__ void cufftdx_private_function<410, double, 1>(cufftdx::detail::complex<double> *rmem, unsigned smem){

asm volatile (R"({
.reg .f64 fd<417>;
.reg .b64 rd<2>;
add.f64 fd81, %50, %82;
add.f64 fd82, %40, fd81;
add.f64 fd83, %61, %72;
add.f64 fd84, fd83, fd82;
add.f64 fd85, %52, %84;
add.f64 fd86, %41, fd85;
add.f64 fd87, %63, %73;
add.f64 fd88, fd87, fd86;
fma.rn.f64 fd89, fd81, 0d3FD3C6EF372FE950, %40;
mul.f64 fd90, fd83, 0d3FE9E3779B97F4A8;
sub.f64 fd91, fd89, fd90;
sub.f64 fd92, %52, %84;
mul.f64 fd93, fd92, 0d3FEE6F0E134454FF;
sub.f64 fd94, %63, %73;
mul.f64 fd95, fd94, 0dBFE2CF2304755A5E;
sub.f64 fd96, fd95, fd93;
sub.f64 fd97, fd91, fd96;
add.f64 fd98, fd96, fd91;
mul.f64 fd99, fd81, 0d3FE9E3779B97F4A8;
sub.f64 fd100, %40, fd99;
fma.rn.f64 fd101, fd83, 0d3FD3C6EF372FE950, fd100;
mul.f64 fd102, fd92, 0d3FE2CF2304755A5E;
mul.f64 fd103, fd94, 0d3FEE6F0E134454FF;
sub.f64 fd104, fd103, fd102;
sub.f64 fd105, fd101, fd104;
add.f64 fd106, fd104, fd101;
fma.rn.f64 fd107, fd85, 0d3FD3C6EF372FE950, %41;
mul.f64 fd108, fd87, 0d3FE9E3779B97F4A8;
sub.f64 fd109, fd107, fd108;
sub.f64 fd110, %50, %82;
mul.f64 fd111, fd110, 0d3FEE6F0E134454FF;
sub.f64 fd112, %61, %72;
mul.f64 fd113, fd112, 0dBFE2CF2304755A5E;
sub.f64 fd114, fd113, fd111;
add.f64 fd115, fd114, fd109;
sub.f64 fd116, fd109, fd114;
mul.f64 fd117, fd85, 0d3FE9E3779B97F4A8;
sub.f64 fd118, %41, fd117;
fma.rn.f64 fd119, fd87, 0d3FD3C6EF372FE950, fd118;
mul.f64 fd120, fd110, 0d3FE2CF2304755A5E;
mul.f64 fd121, fd112, 0d3FEE6F0E134454FF;
sub.f64 fd122, fd121, fd120;
add.f64 fd123, fd122, fd119;
sub.f64 fd124, fd119, fd122;
add.f64 fd125, %56, %88;
add.f64 fd126, %45, fd125;
add.f64 fd127, %66, %77;
add.f64 fd128, fd127, fd126;
add.f64 fd129, %57, %89;
add.f64 fd130, %47, fd129;
add.f64 fd131, %68, %79;
add.f64 fd132, fd131, fd130;
fma.rn.f64 fd133, fd125, 0d3FD3C6EF372FE950, %45;
mul.f64 fd134, fd127, 0d3FE9E3779B97F4A8;
sub.f64 fd135, fd133, fd134;
sub.f64 fd136, %57, %89;
mul.f64 fd137, fd136, 0d3FEE6F0E134454FF;
sub.f64 fd138, %68, %79;
mul.f64 fd139, fd138, 0dBFE2CF2304755A5E;
sub.f64 fd140, fd139, fd137;
sub.f64 fd141, fd135, fd140;
add.f64 fd142, fd140, fd135;
mul.f64 fd143, fd125, 0d3FE9E3779B97F4A8;
sub.f64 fd144, %45, fd143;
fma.rn.f64 fd145, fd127, 0d3FD3C6EF372FE950, fd144;
mul.f64 fd146, fd136, 0d3FE2CF2304755A5E;
mul.f64 fd147, fd138, 0d3FEE6F0E134454FF;
sub.f64 fd148, fd147, fd146;
sub.f64 fd149, fd145, fd148;
add.f64 fd150, fd148, fd145;
fma.rn.f64 fd151, fd129, 0d3FD3C6EF372FE950, %47;
mul.f64 fd152, fd131, 0d3FE9E3779B97F4A8;
sub.f64 fd153, fd151, fd152;
sub.f64 fd154, %56, %88;
mul.f64 fd155, fd154, 0d3FEE6F0E134454FF;
sub.f64 fd156, %66, %77;
mul.f64 fd157, fd156, 0dBFE2CF2304755A5E;
sub.f64 fd158, fd157, fd155;
add.f64 fd159, fd158, fd153;
sub.f64 fd160, fd153, fd158;
mul.f64 fd161, fd129, 0d3FE9E3779B97F4A8;
sub.f64 fd162, %47, fd161;
fma.rn.f64 fd163, fd131, 0d3FD3C6EF372FE950, fd162;
mul.f64 fd164, fd154, 0d3FE2CF2304755A5E;
mul.f64 fd165, fd156, 0d3FEE6F0E134454FF;
sub.f64 fd166, fd165, fd164;
add.f64 fd167, fd166, fd163;
sub.f64 fd168, fd163, fd166;
mul.f64 fd169, fd141, 0d3FE9E3779B97F4A8;
mul.f64 fd170, fd159, 0dBFE2CF2304755A5E;
sub.f64 fd171, fd169, fd170;
mul.f64 fd172, fd159, 0d3FE9E3779B97F4A8;
fma.rn.f64 fd173, fd141, 0dBFE2CF2304755A5E, fd172;
mul.f64 fd174, fd149, 0d3FD3C6EF372FE950;
mul.f64 fd175, fd167, 0dBFEE6F0E134454FF;
sub.f64 fd176, fd174, fd175;
mul.f64 fd177, fd167, 0d3FD3C6EF372FE950;
fma.rn.f64 fd178, fd149, 0dBFEE6F0E134454FF, fd177;
mul.f64 fd179, fd150, 0dBFD3C6EF372FE950;
mul.f64 fd180, fd168, 0dBFEE6F0E134454FF;
sub.f64 fd181, fd179, fd180;
mul.f64 fd182, fd168, 0dBFD3C6EF372FE950;
fma.rn.f64 fd183, fd150, 0dBFEE6F0E134454FF, fd182;
mul.f64 fd184, fd142, 0dBFE9E3779B97F4A8;
mul.f64 fd185, fd160, 0dBFE2CF2304755A5E;
sub.f64 fd186, fd184, fd185;
mul.f64 fd187, fd160, 0dBFE9E3779B97F4A8;
fma.rn.f64 fd188, fd142, 0dBFE2CF2304755A5E, fd187;
add.f64 fd189, fd84, fd128;
add.f64 fd190, fd88, fd132;
sub.f64 fd191, fd84, fd128;
sub.f64 fd192, fd88, fd132;
add.f64 fd193, fd97, fd171;
add.f64 fd194, fd115, fd173;
sub.f64 fd195, fd97, fd171;
sub.f64 fd196, fd115, fd173;
add.f64 fd197, fd105, fd176;
add.f64 fd198, fd123, fd178;
sub.f64 fd199, fd105, fd176;
sub.f64 fd200, fd123, fd178;
add.f64 fd201, fd106, fd181;
add.f64 fd202, fd124, fd183;
sub.f64 fd203, fd106, fd181;
sub.f64 fd204, fd124, fd183;
add.f64 fd205, fd98, fd186;
add.f64 fd206, fd116, fd188;
sub.f64 fd207, fd98, fd186;
sub.f64 fd208, fd116, fd188;
add.f64 fd209, %53, %85;
add.f64 fd210, %42, fd209;
add.f64 fd211, %64, %74;
add.f64 fd212, fd211, fd210;
add.f64 fd213, %55, %87;
add.f64 fd214, %44, fd213;
add.f64 fd215, %65, %76;
add.f64 fd216, fd215, fd214;
fma.rn.f64 fd217, fd209, 0d3FD3C6EF372FE950, %42;
mul.f64 fd218, fd211, 0d3FE9E3779B97F4A8;
sub.f64 fd219, fd217, fd218;
sub.f64 fd220, %55, %87;
mul.f64 fd221, fd220, 0d3FEE6F0E134454FF;
sub.f64 fd222, %65, %76;
mul.f64 fd223, fd222, 0dBFE2CF2304755A5E;
sub.f64 fd224, fd223, fd221;
sub.f64 fd225, fd219, fd224;
add.f64 fd226, fd224, fd219;
mul.f64 fd227, fd209, 0d3FE9E3779B97F4A8;
sub.f64 fd228, %42, fd227;
fma.rn.f64 fd229, fd211, 0d3FD3C6EF372FE950, fd228;
mul.f64 fd230, fd220, 0d3FE2CF2304755A5E;
mul.f64 fd231, fd222, 0d3FEE6F0E134454FF;
sub.f64 fd232, fd231, fd230;
sub.f64 fd233, fd229, fd232;
add.f64 fd234, fd232, fd229;
fma.rn.f64 fd235, fd213, 0d3FD3C6EF372FE950, %44;
mul.f64 fd236, fd215, 0d3FE9E3779B97F4A8;
sub.f64 fd237, fd235, fd236;
sub.f64 fd238, %53, %85;
mul.f64 fd239, fd238, 0d3FEE6F0E134454FF;
sub.f64 fd240, %64, %74;
mul.f64 fd241, fd240, 0dBFE2CF2304755A5E;
sub.f64 fd242, fd241, fd239;
add.f64 fd243, fd242, fd237;
sub.f64 fd244, fd237, fd242;
mul.f64 fd245, fd213, 0d3FE9E3779B97F4A8;
sub.f64 fd246, %44, fd245;
fma.rn.f64 fd247, fd215, 0d3FD3C6EF372FE950, fd246;
mul.f64 fd248, fd238, 0d3FE2CF2304755A5E;
mul.f64 fd249, fd240, 0d3FEE6F0E134454FF;
sub.f64 fd250, fd249, fd248;
add.f64 fd251, fd250, fd247;
sub.f64 fd252, fd247, fd250;
add.f64 fd253, %58, %90;
add.f64 fd254, %48, fd253;
add.f64 fd255, %69, %80;
add.f64 fd256, fd255, fd254;
add.f64 fd257, %60, %91;
add.f64 fd258, %49, fd257;
add.f64 fd259, %71, %81;
add.f64 fd260, fd259, fd258;
fma.rn.f64 fd261, fd253, 0d3FD3C6EF372FE950, %48;
mul.f64 fd262, fd255, 0d3FE9E3779B97F4A8;
sub.f64 fd263, fd261, fd262;
sub.f64 fd264, %60, %91;
mul.f64 fd265, fd264, 0d3FEE6F0E134454FF;
sub.f64 fd266, %71, %81;
mul.f64 fd267, fd266, 0dBFE2CF2304755A5E;
sub.f64 fd268, fd267, fd265;
sub.f64 fd269, fd263, fd268;
add.f64 fd270, fd268, fd263;
mul.f64 fd271, fd253, 0d3FE9E3779B97F4A8;
sub.f64 fd272, %48, fd271;
fma.rn.f64 fd273, fd255, 0d3FD3C6EF372FE950, fd272;
mul.f64 fd274, fd264, 0d3FE2CF2304755A5E;
mul.f64 fd275, fd266, 0d3FEE6F0E134454FF;
sub.f64 fd276, fd275, fd274;
sub.f64 fd277, fd273, fd276;
add.f64 fd278, fd276, fd273;
fma.rn.f64 fd279, fd257, 0d3FD3C6EF372FE950, %49;
mul.f64 fd280, fd259, 0d3FE9E3779B97F4A8;
sub.f64 fd281, fd279, fd280;
sub.f64 fd282, %58, %90;
mul.f64 fd283, fd282, 0d3FEE6F0E134454FF;
sub.f64 fd284, %69, %80;
mul.f64 fd285, fd284, 0dBFE2CF2304755A5E;
sub.f64 fd286, fd285, fd283;
add.f64 fd287, fd286, fd281;
sub.f64 fd288, fd281, fd286;
mul.f64 fd289, fd257, 0d3FE9E3779B97F4A8;
sub.f64 fd290, %49, fd289;
fma.rn.f64 fd291, fd259, 0d3FD3C6EF372FE950, fd290;
mul.f64 fd292, fd282, 0d3FE2CF2304755A5E;
mul.f64 fd293, fd284, 0d3FEE6F0E134454FF;
sub.f64 fd294, fd293, fd292;
add.f64 fd295, fd294, fd291;
sub.f64 fd296, fd291, fd294;
mul.f64 fd297, fd269, 0d3FE9E3779B97F4A8;
mul.f64 fd298, fd287, 0dBFE2CF2304755A5E;
sub.f64 fd299, fd297, fd298;
mul.f64 fd300, fd287, 0d3FE9E3779B97F4A8;
fma.rn.f64 fd301, fd269, 0dBFE2CF2304755A5E, fd300;
mul.f64 fd302, fd277, 0d3FD3C6EF372FE950;
mul.f64 fd303, fd295, 0dBFEE6F0E134454FF;
sub.f64 fd304, fd302, fd303;
mul.f64 fd305, fd295, 0d3FD3C6EF372FE950;
fma.rn.f64 fd306, fd277, 0dBFEE6F0E134454FF, fd305;
mul.f64 fd307, fd278, 0dBFD3C6EF372FE950;
mul.f64 fd308, fd296, 0dBFEE6F0E134454FF;
sub.f64 fd309, fd307, fd308;
mul.f64 fd310, fd296, 0dBFD3C6EF372FE950;
fma.rn.f64 fd311, fd278, 0dBFEE6F0E134454FF, fd310;
mul.f64 fd312, fd270, 0dBFE9E3779B97F4A8;
mul.f64 fd313, fd288, 0dBFE2CF2304755A5E;
sub.f64 fd314, fd312, fd313;
mul.f64 fd315, fd288, 0dBFE9E3779B97F4A8;
fma.rn.f64 fd316, fd270, 0dBFE2CF2304755A5E, fd315;
add.f64 fd317, fd212, fd256;
add.f64 fd318, fd216, fd260;
sub.f64 fd319, fd212, fd256;
sub.f64 fd320, fd216, fd260;
add.f64 fd321, fd225, fd299;
add.f64 fd322, fd243, fd301;
sub.f64 fd323, fd225, fd299;
sub.f64 fd324, fd243, fd301;
add.f64 fd325, fd233, fd304;
add.f64 fd326, fd251, fd306;
sub.f64 fd327, fd233, fd304;
sub.f64 fd328, fd251, fd306;
add.f64 fd329, fd234, fd309;
add.f64 fd330, fd252, fd311;
sub.f64 fd331, fd234, fd309;
sub.f64 fd332, fd252, fd311;
add.f64 fd333, fd226, fd314;
add.f64 fd334, fd244, fd316;
sub.f64 fd335, fd226, fd314;
sub.f64 fd336, fd244, fd316;
mul.f64 fd337, fd321, 0d3FEE6F0E134454FF;
mul.f64 fd338, fd322, 0dBFD3C6EF372FE950;
sub.f64 fd339, fd337, fd338;
mul.f64 fd340, fd322, 0d3FEE6F0E134454FF;
fma.rn.f64 fd341, fd321, 0dBFD3C6EF372FE950, fd340;
mul.f64 fd342, fd325, 0d3FE9E3779B97F4A8;
mul.f64 fd343, fd326, 0dBFE2CF2304755A5E;
sub.f64 fd344, fd342, fd343;
mul.f64 fd345, fd326, 0d3FE9E3779B97F4A8;
fma.rn.f64 fd346, fd325, 0dBFE2CF2304755A5E, fd345;
mul.f64 fd347, fd329, 0d3FE2CF2304755A5E;
mul.f64 fd348, fd330, 0dBFE9E3779B97F4A8;
sub.f64 fd349, fd347, fd348;
mul.f64 fd350, fd330, 0d3FE2CF2304755A5E;
fma.rn.f64 fd351, fd329, 0dBFE9E3779B97F4A8, fd350;
mul.f64 fd352, fd333, 0d3FD3C6EF372FE950;
mul.f64 fd353, fd334, 0dBFEE6F0E134454FF;
sub.f64 fd354, fd352, fd353;
mul.f64 fd355, fd334, 0d3FD3C6EF372FE950;
fma.rn.f64 fd356, fd333, 0dBFEE6F0E134454FF, fd355;
mul.f64 fd357, fd323, 0dBFD3C6EF372FE950;
mul.f64 fd358, fd324, 0dBFEE6F0E134454FF;
sub.f64 fd359, fd357, fd358;
mul.f64 fd360, fd324, 0dBFD3C6EF372FE950;
fma.rn.f64 fd361, fd323, 0dBFEE6F0E134454FF, fd360;
mul.f64 fd362, fd327, 0dBFE2CF2304755A5E;
mul.f64 fd363, fd328, 0dBFE9E3779B97F4A8;
sub.f64 fd364, fd362, fd363;
mul.f64 fd365, fd328, 0dBFE2CF2304755A5E;
fma.rn.f64 fd366, fd327, 0dBFE9E3779B97F4A8, fd365;
mul.f64 fd367, fd331, 0dBFE9E3779B97F4A8;
mul.f64 fd368, fd332, 0dBFE2CF2304755A5E;
sub.f64 fd369, fd367, fd368;
mul.f64 fd370, fd332, 0dBFE9E3779B97F4A8;
fma.rn.f64 fd371, fd331, 0dBFE2CF2304755A5E, fd370;
mul.f64 fd372, fd335, 0dBFEE6F0E134454FF;
mul.f64 fd373, fd336, 0dBFD3C6EF372FE950;
sub.f64 fd374, fd372, fd373;
mul.f64 fd375, fd336, 0dBFEE6F0E134454FF;
fma.rn.f64 fd376, fd335, 0dBFD3C6EF372FE950, fd375;
add.f64 %1, fd190, fd318;
add.f64 %0, fd189, fd317;
add.f64 %3, fd194, fd341;
add.f64 %2, fd193, fd339;
add.f64 %5, fd198, fd346;
add.f64 %4, fd197, fd344;
add.f64 %7, fd202, fd351;
add.f64 %6, fd201, fd349;
add.f64 %9, fd206, fd356;
add.f64 %8, fd205, fd354;
sub.f64 %11, fd192, fd319;
add.f64 %10, fd191, fd320;
add.f64 %13, fd196, fd361;
add.f64 %12, fd195, fd359;
add.f64 %15, fd200, fd366;
add.f64 %14, fd199, fd364;
add.f64 %17, fd204, fd371;
add.f64 %16, fd203, fd369;
add.f64 %19, fd208, fd376;
add.f64 %18, fd207, fd374;
sub.f64 %21, fd190, fd318;
sub.f64 %20, fd189, fd317;
sub.f64 %23, fd194, fd341;
sub.f64 %22, fd193, fd339;
sub.f64 %25, fd198, fd346;
sub.f64 %24, fd197, fd344;
sub.f64 %27, fd202, fd351;
sub.f64 %26, fd201, fd349;
sub.f64 %29, fd206, fd356;
sub.f64 %28, fd205, fd354;
add.f64 %31, fd192, fd319;
sub.f64 %30, fd191, fd320;
sub.f64 %33, fd196, fd361;
sub.f64 %32, fd195, fd359;
sub.f64 %35, fd200, fd366;
sub.f64 %34, fd199, fd364;
sub.f64 %37, fd204, fd371;
sub.f64 %36, fd203, fd369;
sub.f64 %39, fd208, fd376;
sub.f64 %38, fd207, fd374;
})"
     : "=d"(rmem[0].x), "=d"(rmem[0].y), "=d"(rmem[1].x), "=d"(rmem[1].y), "=d"(rmem[2].x), "=d"(rmem[2].y), "=d"(rmem[3].x), "=d"(rmem[3].y), "=d"(rmem[4].x), "=d"(rmem[4].y), "=d"(rmem[5].x), "=d"(rmem[5].y), "=d"(rmem[6].x), "=d"(rmem[6].y), "=d"(rmem[7].x), "=d"(rmem[7].y), "=d"(rmem[8].x), "=d"(rmem[8].y), "=d"(rmem[9].x), "=d"(rmem[9].y), "=d"(rmem[10].x), "=d"(rmem[10].y), "=d"(rmem[11].x), "=d"(rmem[11].y), "=d"(rmem[12].x), "=d"(rmem[12].y), "=d"(rmem[13].x), "=d"(rmem[13].y), "=d"(rmem[14].x), "=d"(rmem[14].y), "=d"(rmem[15].x), "=d"(rmem[15].y), "=d"(rmem[16].x), "=d"(rmem[16].y), "=d"(rmem[17].x), "=d"(rmem[17].y), "=d"(rmem[18].x), "=d"(rmem[18].y), "=d"(rmem[19].x), "=d"(rmem[19].y): "d"(rmem[0].x), "d"(rmem[0].y), "d"(rmem[1].x), "d"(rmem[1].y), "d"(rmem[1].y), "d"(rmem[2].x), "d"(rmem[2].y), "d"(rmem[2].y), "d"(rmem[3].x), "d"(rmem[3].y), "d"(rmem[4].x), "d"(rmem[4].y), "d"(rmem[4].y), "d"(rmem[5].x), "d"(rmem[5].y), "d"(rmem[5].y), "d"(rmem[6].x), "d"(rmem[6].y), "d"(rmem[7].x), "d"(rmem[7].y), "d"(rmem[7].y), "d"(rmem[8].x), "d"(rmem[8].y), "d"(rmem[8].y), "d"(rmem[9].x), "d"(rmem[9].y), "d"(rmem[10].x), "d"(rmem[10].y), "d"(rmem[10].y), "d"(rmem[11].x), "d"(rmem[11].y), "d"(rmem[11].y), "d"(rmem[12].x), "d"(rmem[12].y), "d"(rmem[13].x), "d"(rmem[13].y), "d"(rmem[13].y), "d"(rmem[14].x), "d"(rmem[14].y), "d"(rmem[14].y), "d"(rmem[15].x), "d"(rmem[15].y), "d"(rmem[16].x), "d"(rmem[16].y), "d"(rmem[16].y), "d"(rmem[17].x), "d"(rmem[17].y), "d"(rmem[17].y), "d"(rmem[18].x), "d"(rmem[18].y), "d"(rmem[19].x), "d"(rmem[19].y));
};


#endif
